Product configuration server for efficiently displaying selectable attribute values for configurable products

ABSTRACT

A computer-implemented system leverages binary decision diagram (BDD) structures to provide selectable attribute values for one or more configurable products. The BDD structures may define offering attribute nodes and non-offering attribute nodes. The offering attribute nodes may represent product attribute values selectable by the user based on product configuration rules, and the non-offering attribute nodes may represent product attribute values not selectable by the user based on the product configuration rules. The computer-implemented system may further include at least one memory storage device that stores one or more product configuration rules used to define permissible product configurations and attributes of the products. By evaluating the BDD structures and the product configuration rules, the computer-implemented system may prepare a customized set of product records for transmission to a user, wherein the customized set of product records contains product attribute values corresponding to the offering attribute nodes.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 12/806,812, now U.S. Pat. No. 8,290,822, filed Aug. 20, 2010,the entire disclosure of which is hereby incorporated herein byreference. The present application is also a continuation of U.S. patentapplication Ser. No. 13/616,550, filed Sep. 14, 2012, now U.S. Pat. No.8,548,867, the entire disclosure of which is hereby incorporated hereinby reference.

BACKGROUND

With the advent of the Internet and high-speed networking, people preferto purchase or view products using a network browser. These products mayinclude tangible products, such as toys, clothing, electronic devices,jewelry, and other tangible products, as well as intangible products,such as insurance policies, cable television service subscriptions,magazine subscriptions, medical prescriptions, and other intangibleproducts.

While viewing a tangible or intangible product, and before completingthe purchase of the tangible or intangible product, a person generallyprefers to tailor the tangible or intangible product to the person'sneeds and/or preferences. For example, a shopper may be using his or hernetwork browser to view a bicycle being offered by an online merchant.The bicycle may have many attributes, such as color, height, male orfemale versions, available tires, construction materials, or otherattributes. Using a network browser, the shopper may configure thebicycle according to these attributes. As another example, a shopper maybe using his or her network browser to view a cable television servicesubscription for a cable television provider. The cable televisionservice subscription may also have numerous attributes, such asavailable channels, different subscription tiers, renewal policies, orother attributes. A shopper may alter or change these attributes to viewa cable television service subscription according to the shopper'spreferences.

To offer a variety of products with configurable or selectableattributes, an online merchant ordinarily maintains a database ofattributes and products on the merchant side of the transaction.However, as the number of offered products and selectable attributesincreases, the amount of effort needed on the merchant side to process arequest from a shopper to view configurable products also increases,sometimes exponentially. As the effort required on the merchant sideincreases, the amount of time spent by the shopper waiting to view aconfigured product also increases. Hence, current product configurationsystems are insufficient for complex configurable products because oftheir inability to scale with increases to inventory or changes in thenumber of attributes for configuring a product, and in the necessity forthe configuration processing to be done primarily on the merchant sideof the transaction.

BRIEF SUMMARY

A computer-implemented system for determining product attributes for aconfigurable product is disclosed. In one embodiment, thecomputer-implemented system includes a non-transitory, computer-readablemedium storing computer-executable instructions and one or moreprocessors in communication with the non-transitory, computer-readablemedium. The one or more processors may be configured to receive customerattribute values relating to customer demographic information andidentify a product configuration rule based on a selected configurableproduct, wherein the product configuration rule is associated with aplurality of versions of the product configuration rule, and eachversion of the product configuration rule evaluates differentlydepending on at least one customer attribute. The one or more processorsmay also be configured to select a version of the product configurationrule from the plurality of versions of the product configuration ruleusing at least one of the plurality of customer attribute values,wherein the selection of the version of the product configuration ruleis performed prior to evaluation of the selected version of the productconfiguration rule, and evaluate the selected version of the productconfiguration to provide a configuration of the selected configurableproduct.

In another aspect of the disclosed system, the product configurationrule is associated with a class of product configuration rules, theclass of product configuration rules determining when the selectedversion of the product configuration rule is evaluated.

In a further aspect of the disclosed system, the class of productconfiguration rules associated with the selected version of the productconfiguration rule indicates that the selected version of the productconfiguration rule is to be evaluated after receiving the customerattribute values.

In yet another aspect of the disclosed system, the class of productconfiguration rules associated with the selected version of the productconfiguration rule indicates that the selected version of the productconfiguration rule is to be transmitted for evaluation.

In yet a further aspect of the disclosed system, the productconfiguration rule is assigned a product configuration rule type, theassigned product configuration rule type being selected from a groupcomprising a non-conditional product configuration rule type, a customerconditional product configuration rule type, a product conditionalproduct configuration rule type, and a product conditional aggregationproduct configuration rule type.

In another aspect of the disclosed system, the non-conditional productconfiguration rule type identifies that the product configuration ruleincludes an action statement not dependent upon a conditional statement.

In a further aspect of the disclosed system, the product conditionalproduct configuration rule type identifies that the productconfiguration rule includes an action statement dependent upon aconditional statement, wherein the conditional statement includes atleast one product attribute value.

In yet another aspect of the disclosed system, the product configurationrule is associated with a binary decision diagram structure, and eachversion of the plurality of versions of the product configuration ruleis associated with a corresponding version of the binary decisiondiagram structure.

In yet a further aspect of the disclosed system, each version of thebinary decision diagram structure varies depending on the associatedversion of the product configuration rule.

In another aspect of the disclosed system, the one or more processorsare further configured to evaluate a binary decision diagram structureassociated with the selected version of the product configuration rule,wherein the evaluation of the binary decision diagram structureidentifies one or more selectable product attribute values for theselected configurable product.

A computer-implemented method for determining product attributes for aconfigurable product is also disclosed. In one aspect, thecomputer-implemented method includes receiving, with one or moreprocessors, customer attribute values relating to customer demographicinformation and identifying a product configuration rule in anon-transitory, computer-readable medium in communication with the oneor more processors based on a selected configurable product, wherein theproduct configuration rule is associated with a plurality of versions ofthe product configuration rule, and each version of the productconfiguration rule evaluates differently depending on at least onecustomer attribute. The method may also include selecting, with the oneor more processors, a version of the product configuration rule from theplurality of versions of the product configuration rule using at leastone of the plurality of customer attribute values, wherein the selectionof the version of the product configuration rule is performed prior toevaluation of the selected version of the product configuration rule,and evaluating the selected version of the product configuration toprovide a configuration of the selected configurable product.

In another aspect of the disclosed method, the product configurationrule is associated with a class of product configuration rules, theclass of product configuration rules determining when the selectedversion of the product configuration rule is evaluated.

In a further aspect of the disclosed method, the class of productconfiguration rules associated with the selected version of the productconfiguration rule indicates that the selected version of the productconfiguration rule is to be evaluated after receiving the customerattribute values.

In yet another aspect of the disclosed method, the class of productconfiguration rules associated with the selected version of the productconfiguration rule indicates that the selected version of the productconfiguration rule is to be transmitted for evaluation.

In yet a further aspect of the disclosed method, the productconfiguration rule is assigned a product configuration rule type, theassigned product configuration rule type being selected from a groupcomprising a non-conditional product configuration rule type, a customerconditional product configuration rule type, a product conditionalproduct configuration rule type, and a product conditional aggregationproduct configuration rule type.

In another aspect of the disclosed method, the non-conditional productconfiguration rule type identifies that the product configuration ruleincludes an action statement not dependent upon a conditional statement.

In a further aspect of the disclosed method, the product conditionalproduct configuration rule type identifies that the productconfiguration rule includes an action statement dependent upon aconditional statement, wherein the conditional statement includes atleast one product attribute value.

In yet another aspect of the disclosed method, the product configurationrule is associated with a binary decision diagram structure, and eachversion of the plurality of versions of the product configuration ruleis associated with a corresponding version of the binary decisiondiagram structure.

In yet a further aspect of the disclosed method, each version of thebinary decision diagram structure varies depending on the associatedversion of the product configuration rule.

In another aspect of the disclosed method, the method further includesevaluating, with the one or more processors, a binary decision diagramstructure associated with the selected version of the productconfiguration rule, wherein the evaluation of the binary decisiondiagram structure identifies one or more selectable product attributevalues for the selected configurable product.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates one example of client devices in communication with aproduct configuration server to configure one or more configurableproducts.

FIG. 2 illustrates one example of a client device in communication withthe product configuration server of FIG. 1.

FIG. 3 illustrates one example of a modeling workbench in communicationwith the product configuration server of FIG. 1.

FIG. 4 illustrates one example of various components of the layersleveraged by a product configuration server for providing one or moreconfigurable products

FIG. 5 illustrates one example of a channel attribute binary decisiondiagram structure.

FIG. 6 illustrates one example of a product attribute binary decisiondiagram structure.

FIG. 7 illustrates one example of a premium channel attribute binarydecision diagram structure.

FIG. 8 illustrates one example of a speed attribute binary decisiondiagram structure.

FIG. 9 illustrates one example of a phone feature attribute binarydecision diagram structure.

FIG. 10 illustrates one example of an on-demand subscription attributebinary decision diagram structure.

FIG. 11 illustrates one example of modified attribute binary decisiondiagram structure in accordance with a product configuration rule.

FIG. 12 illustrates one example of a merged binary decision diagramstructure in accordance with a product configuration rule.

FIG. 13 illustrates one example of a logic flow for a publishingprocess.

FIG. 14 illustrates one example of a client device in communication witha product configurable server to configure a configurable product.

FIG. 15 illustrates one example of a graphical user interface forpreparing a product definition for a configurable product

FIGS. 16-21 illustrate various examples of a graphical user interfacefor defining one or more product configuration rules of varying productconfiguration rule types.

FIG. 22 illustrates one example of a graphical user interface forproviding and selecting customer attribute values for a configurableproduct.

FIGS. 23-24 illustrate various examples of graphical user interfacesdisplayed during the evaluation of a product configuration rule of thenon-conditional product rule type.

FIGS. 25-29 illustrate various examples of graphical user interfacesdisplayed during the evaluation of product configuration rules of theproduct conditional rule type.

FIGS. 30-32 illustrate various examples of graphical user interfacesdisplayed during the evaluation of a product configuration rule of theproduct aggregation rule type.

FIG. 33 illustrates one example of logic flow for preparing a customizedproduct record for sending in response to a request to configure aconfigurable product

FIG. 34 illustrates one example of logic flow regarding additionaldetails for preparing the customized product record.

FIG. 35 illustrates one example of logic flow for displaying selectableattribute values to a customer based on the customized product record.

FIG. 36 illustrates one example of other actions that one or more of theengines from FIG. 4 may take in response to one or more requests.

DETAILED DESCRIPTION

FIG. 1 illustrates one example of client devices 102-108 incommunication with a product configuration server 110 via a network 112.The client devices 102-108 may be any type of client devices, such asmobile devices, desktop computers, laptop computers, netbooks, tabletcomputers, or any other type of client device. Examples of mobiledevices include personal display assistants, smartphones, cellularphones, portable digital music players, or any other type of mobiledevice.

The client devices 102-108 may request to view and/or configure one ormore configurable products from the product configuration server 110.The one or more configurable products may be any type of product,including tangible or intangible products. A tangible product may be aphysical object or an object discernable by touching. Examples oftangible products include toys, such as action figures and dolls,software products, sporting equipment, such as bicycles, baseballs, andbasketballs, eating utensils, kitchen appliances, automobiles, or anyother tangible products now known or later developed. An intangibleproduct may be non-physical object, such as a subscription or service.Examples of intangible products include cable television servicesubscriptions, insurance policies, magazine subscriptions, a vehiclerepair service, a home cleaning service, or any other intangible productnow known or later developed.

The product configuration server 110 is operative to display one or moreconfigurable products to the client devices 102-108. The productconfiguration server 110 may be accessible via a network 112, which maybe a Wide Area Network (“WAN”) such as the Internet, a Local AreaNetwork (“LAN”) such as an intranet, or a combination of WANs and LANs.In one implementation, the product configuration server 110 is an onlineshopping provider operative to provide a website on the Internet for anonline shopping forum for access by the client devices 102-108. In thisimplementation, customers may use the client devices 102-108 to purchaseconfigurable products sold by the online shopping provider. In anotherimplementation, the product configuration server 110 is a corporateintranet server operative to display configurable products to the clientdevices 102-108. In this implementation, the users of the client devices102-108 may be employees of a corporation using the corporate intranetserver. Other implementations of the product configuration server 110are also possible, such as providing a website for a beverage vendor, awebsite for a clothing vendor, or other type of website. Moreover, theinteractions between the product configurations server 110 and theclient devices 102-108 may be extended to any system or group of systemsoperative to process services.

The product configuration server 110 and the client devices 102-108 maycommunicate through the network 112. For example, one or more clientdevices 102-108 may transmit a request for one or more configurableproducts from the product configuration server 110. In response, theproduct configuration server 110 may display one or more configurableproducts to the client devices 102-108. Moreover, a software applicationmay be available from the product configuration server 110 to facilitatethe display and configuration of the configurable products displayed bythe product configuration server 110. The software application may be asoftware extension to an existing application used to display theconfigurable products offered by the product configuration server 110,such as a software extension for a network browser. As explained below,the software extension may be a plug-in for an Internet browser, such asMozilla Firefox, available from the Mozilla Foundation, located inMountain View, Calif.

Although FIG. 1 illustrates that the client devices 102-108 are incommunication with a single product configuration server 110, the clientdevices 102-108 may be in communication with multiple productconfiguration servers (not shown) via the network 112. Furthermore, theclient devices 102-108 may be in communication with each other. In oneimplementation, a client device 102-108 may be a product configurationserver 110. Similarly, in another implementation, a productconfiguration server 110 may be a client device 102-108. In addition, asingle product configuration server 110 may include multiple productconfiguration servers, and a single client device, such as a clientdevice 102, may include multiple client devices.

The product configuration server 110 may also be in communication with amodeling workbench 116 via a network 114. As with network 112, thenetwork 114 may be a WAN, a LAN, or a combination of WANs and LANs.Moreover, the network 114 may be the network 112.

The modeling workbench 116 is operative to define one or more aspectsused in displaying or preparing a configurable product. For example, themodeling workbench 116 may include a modeling environment operative todefine various models, such as product models, rule models, and/orpricing models. Moreover, the modeling workbench 116 may includeintuitive templates to capture configurable product features, parts andpotential relations between one or more configurable products. AlthoughFIG. 1 illustrates that the modeling workbench 116 is in communicationwith the product configuration server 110, the modeling workbench 116may be in communication with one or more alternative or additionalsystems and/or components, such as one or more client devices 102-108.Additional details regarding the modeling workbench 116 are furtherexplained with reference to FIG. 3.

FIG. 2 illustrates one example of a client device 102 in communicationwith the product configuration server 110 from FIG. 1. In oneimplementation, the product configuration server 110 includes acomputer-readable medium 202, a network interface 204, and a processor206. The computer-readable medium 202 may be segmented into variouslayers 208-212 for displaying configurable products. In oneimplementation, the layers 208-212 may include a service layer 208, adatabase layer 210, and an engine layer 212. Alternative layers are alsopossible.

The layers 208-212 may facilitate the display and configuration of oneor more configurable products. The server layer 208 may be operative toprovide services for displaying the one or more configurable products.As discussed with reference to FIG. 4, these services may include aproduct service, a rules service, a pricing service, and a publishingservice. The configurable product server 110 may provide access to theservices of the service layer 208 to one or more external componentssuch as the client devices 102-108 and/or the modeling workbench 116,but also to one or more layers, such as the database layer 210 and/orthe engine layer 212.

The database layer 210 may be operative to define one or more databasesfor storing information to facilitate the configuration of one or moreconfigurable products. As discussed with reference to FIG. 4, thedatabase layer 210 may include one or more databases, such as a productand product rules database, a rules database, and/or a pricing database.The database layer 210 may be accessible by one or more of the otherlayers, such as the engine layer 212 or the service layer 208. Moreover,the database layer 210 may be accessible to an external component orsystem, such as the client device 102 and/or the modeling workbench 116directly or indirectly, such as through the service layer 208.

The engine layer 212 may be operative to provide one or more engines foraccessing and/or evaluating information to facilitate the configurationof one or more configurable products. As discussed with reference toFIG. 4, the engine layer 212 may include one or more engines, such as aproduct engine, a rules engine, and/or a pricing engine. The enginelayer 212 may also include a versioning engine operative to select aversion of a rule according to one or more rule attributes. Moreover,the engine layer 212 may be accessible by one or more of the otherlayers, such as the service layer 208 or the database layer 210.Moreover, the engine layer 212 may be accessible to an externalcomponent or system, such as the client device 102 and/or the modelingworkbench 116 directly or indirectly, such as through the service layer208. One example of commercially available product that implements theengines 410-416 established in the engine layer 212 is the iFoundrysoftware product, available from ValueMomentum, Inc, located in SouthPlainfield, N.J., United States.

The processor 206 is operative to process requests for one or moreconfigurable products that the processor 206 may receive from the clientdevice 102. Moreover, the processor 206 may facilitate the operationand/or accessing of one or more components of the layers 208-212. Forexample, the processor 206 may facilitate the operation and/or controlof one or more engines of the engine layer 212. Similarly, the processor206 may facilitate the accessing of one or more databases of thedatabase layer 210. Additional operations performable by the processor206 are also possible.

The network interface 204 is operative to communicate with the processor206 and to transmit requests for one or more configurable products tothe client device 102. Moreover, the network interface 204 may receiveselections of product attributes from the client device 102 and pass theselection of these attributes to the processor 206 for furtherprocessing and/or evaluation. In addition, the network interface 204 maycommunicate selected rules and/or product configuration information tothe client device 102 for processing by the client device 102. Thenetwork interface 204 may be any type of wired network interface,wireless network interface, or a combination of wired and wirelessnetwork interfaces.

The client device 102 includes one or more components for transmittingrequests for configurable products to the product configuration server110. The client device 102 may also include one or more components forconfiguring a configurable product or for sending selected productattribute values to the product configuration server 110 for configuringa product. The client device 102 may also include one or more componentsfor selecting product attributes and for displaying a configurableproduct with various selected product attributes. In one implementation,the client device 102 includes a memory storage device 222, a networkinterface 224, a processor 226, an input interface 228, and a display230. Moreover, the client device 102 may include one or more componentsof the product configuration server 110. Alternative components are alsopossible.

The network interface 224 is operative to communicate with the processor226 and to receive information regarding one or more configurableproducts from the product configuration server 110. For example, thenetwork interface 224 may receive a customized product recordrepresentative of a configurable product that the product configurationserver 110 has customized based on one or more product configurationrules and/or customer attributes, such as the customer's geographiclocation, age, area of employment, or other customer attribute. Inaddition, the network interface 224 may also receive a client-side setof product configuration rules that may be evaluated by the processor226 in configuring the configurable product represented by a receivedcustomized product record. Moreover, during the product configurationprocess, the network interface 224 may transmit selections of productattributes to the product configuration server 110 for evaluation by theproduct configuration server processor 206. In general, the networkinterface 204 may communicate product configuration rules, productattribute values, customer attribute values, or any other informationrelating to the product configuration process. The network interface 204may be any type of wired network interface, wireless network interface,or a combination of wired and wireless network interfaces.

The processor 226 is operative to receive and process information fromthe network interface 224, the memory storage device 222, the inputinterface 228, or combinations thereof. For example, the processor 226may be operative to receive the client-side set of product configurationrules from the network interface 224 and evaluate the client-side set ofproduct configuration rules. In addition, the processor 226 may receivea selection of product attribute values, customer attribute values, orany other type of attribute values from the input interface 228.

The input interface 228 is operative to receive input from a user.However, the input interface 228 may also receive input from anothercomponent, machine, computer system, or any other device operative toprovide input. The input interface 228 may be a tactile interface, suchas a keyboard or mouse, an audio interface, such as a microphone, amachine interface, such as a Universal Serial Bus (“USB”) interface, orany other combination of input interfaces now known or later developed.

The display device 230 is operative to display information regarding theconfigurable product being configured by the client device 102. Asexplained with reference to FIGS. 16-35 the client device may display agraphical user interface for accessing the client device 102, theproduct configuration server 110, or both. For example, the displaydevice 230 may display the graphical user interface for network browserstored on the client device 102 and operative to configure aconfigurable product, such as by receiving selections of one or moreproduct attribute values. As another example, the display device 230 maydisplay a graphical user interface operative to receive input regardingthe configuration of a product, the configuration of pricing model, theconfiguration of a product configuration rule, or any otherconfiguration information used by the product configuration server 110.In other words, the display device 230 may display a graphical userinterface to remotely administer the databases of the database layer 210of the product configuration server 110.

The memory storage device 222 is operative to store a network browser232 operative to interact with the product configuration server 110,such as by receiving a customized product record corresponding to aconfigurable product, by receiving a client-side set of productconfiguration rules, or by transmitting selected product attributevalues, or any other type of interaction with the product configurationserver 110. In general, interactions between the network browser 232 andthe product configuration server 110 may include the direct or indirecttransmission and receipt of any kind of information between the networkbrowser 232 and the product configuration server 110. The networkbrowser 232 may be any type of network browser 232, such as an Internetbrowser, a LAN browser, a file system browser, or any other type ofbrowser now known or later developed. In one implementation, the networkbrowser 232 is Mozilla Firefox. However, the network browser 232 mayalso be another browser, such as Internet Explorer, Windows Explorer, orany other type of browser.

In interacting with the product configuration server 110, the networkbrowser 232 may include the display of a network application 234operating in conjunction with a network browser extension 236. However,in some circumstances, the network application 234 may operate withoutthe assistance of the network browser extension 236.

The network application 234 is operative to display a configurableproduct and receive product attribute values for configuring theconfigurable product. The underlying code for the network application234 may reside on the product configuration server 110, but when thenetwork browser 232 interacts with the product configuration server 110,a portion of that code may be transmitted to the client device 110 toact as the network application 234. Exemplary images of a graphical userinterface for the network application 234 are discussed with referenceto FIGS. 23-35. The network application 234 may be an applicationwritten in one or more computer-programming languages, such as Java, C#,PHP, JSP, C, C++, JavaScript, XML, or any other computer programminglanguage now known or later developed.

As discussed above, the product configuration server 110 may provide thenetwork browser extension 236 as a software extension to the networkbrowser 232. In one implementation, the network browser extension 236 isa software application written in a computer-programming language, suchas Java, C#, PHP, Silverlight, AJAX, JSP, C, C++, JavaScript, XML, orany other computer programming language now known or later developed.The network browser extension 236 may be operative to perform operationson the client device 102 to expedite the configuration of a configurableproduct. Moreover, the network browser extension 2336 For example, thenetwork browser extension 236 may evaluate a client-side set of productconfiguration rules using selected one or more product attribute valuesto display a product corresponding to the selected attribute values. Asthe operations are performable by the network browser extension 236, theproduct configuration server 110 may be free to perform other operationsfor the client device 102 or other client devices interacting with theproduct configuration server 110. Moreover, because the network browserextension 236 offloads the evaluation of a selected set of productconfiguration rules onto the client device 102, the network application234 may display a configured product more rapidly than if the productconfiguration server 110 were to perform the evaluation of the same setof production configuration rules.

FIG. 3 illustrates one example of the modeling workbench 116 incommunication with the product configuration server 110. In general, themodeling workbench 116 is a modeling environment operative to defineconfigurable products, one or more product configuration rules, and oneor more pricing models for the configurable products.

In one implementation, the modeling workbench 116 may include one ormore client devices 302-308 in communication with a modeling database310. The modeling database 310 is one example of a modeling repository.The modeling database 310 is operative to store one or more modelingdatabase records that define models for the configurable products,models for one more product configuration rules, and one or more pricingmodels.

Moreover, the modeling workbench 116 may assist in the generation andmanagement of one or more versions for a given model. Hence, any modeldefined by the modeling workbench 116 may have multiple versions.

By using a model, such as a configurable product model, a client device302 may efficiently define multiple configurable products that aresimilarly structured. Hence, the client device 302 need not guess ormake predictions about the type of attributes the configurable productshould have. For example, the client device 302 may define a first cabletelevision service subscription product and then a second cabletelevision service subscription product, where each cable televisionproduct has a common set of attributes based on a cable televisionservice subscription model stored in the modeling database 310. Theattributes for a configurable product may represent the features of theconfigurable product, and each product attribute may have one or moreproduct attribute values. In addition, the product structures for theone or more models may be further configured.

The modeling database 310 may leverage one or more syntaxes forimplementing the one or more modeling database records. For example, themodeling database 310 may leverage a meta-language syntax that comprisesat least one element of data content and at least one element identifierthat describes the type of content of the at least one element of datacontent. Moreover, the meta-language syntax may include an extensiblemarkup language (“XML”). In addition, the modeling database 310 mayrecognize additional languages, such as a Structured Query Language(“SQL”).

The modeling workbench 116 may be used to define product configurationmodels for one or more product configuration rule types. In general, aproduct configuration rule may define the permissible and impermissibleconfigurations for a configurable product. A product configuration rulemay also define permissible and impermissible attribute values for aproduct configuration. Hence, when a configurable product is beingconfigured, the configuration of that configurable product may begoverned by one or more product configuration rules.

In one implementation, the modeling workbench 116 may be used to definefour product configuration rule types. However, alternative productconfiguration rule types are also possible. The four productconfiguration rule types may include a non-conditional rule type, aproduct conditional rule type, a customer conditional rule type, and aproduct conditional aggregation rule type. Table 1 below clarifies thefour rule types that may be defined. Table 2 provides examples of therule types clarified by Table 1.

TABLE 1 Examples of Product Configuration Rule Types Rule Type StructureDescription Non-Conditional <Action Statement> A non-conditional ruletype may be a rule type that includes an action statement not dependentupon a conditional statement. A non-conditional rule may be executed fora transaction when the non-conditional is selected. Product <ConditionalA product conditional Conditional Statement(product rule type may be arule attribute type that includes an value)><Action action statementStatement> dependent upon a conditional statement comprising a productattribute value. A product conditional rule may represent a rule thathas a condition defined on one or more product attributes. Customer<Conditional A customer conditional Conditional Statement(customer ruletype may be a rule attribute type that includes an value)><Action actionstatement Statement> dependent upon a conditional statement comprising acustomer attribute value. In addition, a customer conditional rule maybe a rule where the conditions of the rule are not defined on productattributes. Product <Aggregation A product conditional ConditionalFunction> aggregation rule type Aggregation may be a rule type thatincludes an aggregation function or a summation function based on a userselection.

As mentioned above, Table 2 below provides examples of the variousproduct configuration rule types clarified in Table 1. The exemplaryproduct configuration rules of Table 2 refer to intangible products,such as a cable television service subscription and an insurance policy.However, exemplary product configuration rules are also possible forother intangible products as well as tangible products.

TABLE 2 Examples of Product Configuration Rules Rule Type ExampleNon-Conditional The Cinemax channel is not offered in Florida.Non-Conditional ABC, NBC, CBS, and FOX channels are mandatory channels.Non-Conditional Rental Reimbursement and Emergency Road Service aremutually exclusive. Non-Conditional ESPN and Golf channels are mutuallyexclusive in Florida. (In this example, when a product attribute valueof “ESPN” is selected, the Golf channel may not be selected if thecustomer provides that cable television service subscription is forservice in Florida.) Product Conditional If Collision coverage isSelected then Comprehensive Coverage must be selected. ProductConditional If a customer attribute value indicates that the customercredit score is greater than 720, the CNBC channel is offered alongsidethe Bloomberg channel when the Bloomberg channel is selected. (In thisexample, when a product attribute value of “Bloomberg” is selected, theCNBC channel may be offered to the customer as part of a cabletelevision service subscription if the customer indicates that thecustomer has a credit score greater than 720.) Product Conditional Ifthe customer selects that Bodily Injury Per Person Limit is 20, thenBodily Injury Per Accident Limit must be 40. Customer Conditional If thecustomer credit score is less than 600, then do not offer Golf and HBOchannels to the customer. Customer Conditional If the customer householdhas more than 2 children, then offer Nick Jr. and Disney channels freeto the customer. Customer Conditional Bodily injury accident limit mustbe greater than 100 if the customer provides that the customer is olderthan 30 years. Product Conditional Total channel selections Aggregationcannot be more than 30 in Florida. Product Conditional Earth Quake SumInsured is Aggregation Derived from Material Damage Sum Insured. ProductConditional Stocks Sum Insured is the sum Aggregation of Stocks inProcess, Stock in Warehouse and Stock in Open Sum Insured.

As the modeling workbench 116 and/or product configuration server 110may define one or more product configuration rule types, the productconfiguration server 110 and/or the modeling workbench 116 mayautomatically assign a product configuration rule type to a productconfiguration rule. In one implementation, the modeling workbench 116and/or product configuration server 110 may identify the constituentparts of the product configuration rule and assign a productconfiguration rule type based on the constituent parts. For example,where a product configuration rule includes a conditional statementhaving a customer attribute value followed by an action statement, themodeling workbench 116 and/or the product configuration server 110 mayautomatically assign the customer conditional product configuration ruletype to the product configuration rule. Hence, a user or system of themodeling workbench 116 and/or product configuration server 110 need notconcern itself with assigning a product configuration rule type to theproduct configuration rule.

Moreover, one or more of the product configuration rules may be assigneda class type that indicates when the product configuration server 110may evaluate or execute the product configuration rule. For example, theclasses of the product configuration rules may be assigned based on whenthe request for the configurable product is received, after the productconfiguration server 110 receives customer attribute information, duringthe time while the product configuration server 110 is preparing one ormore customized product records, and after the product configurationserver 110 has prepared the one or more customized product records.Moreover, the class type of the product configuration rule may indicatethe entity to evaluate the product configuration rule. For example, someproduct configuration rules may be evaluated by the productconfiguration server 110, whereas other product configuration rules maybe evaluated by the client device 102. As mentioned above, the clientdevice may include a network browser extension 236 that may assist inthe evaluation of the product configuration rules to be evaluated by theclient device 102. Table 3 below indicates the various classes to whichone or more product configuration rule types may be assigned and theentity that may evaluate the product configuration rule; Table 4provides one exemplary configuration of how product configuration ruletypes may be assigned by the product configuration server 110.

TABLE 3 Product Configuration Rule Classes Class When EvaluatedEvaluating Entity Class One After receiving the Product initial requestfor a configuration configurable product server 110 with possiblecustomer attribute values. A class one product configuration rule mayalso be continuously evaluated while a customer or the client device 102is configuring a configurable product. Class Two After the client deviceClient device 102; 102 receives a network browser customized product232; and/or network record from the product browser extensionconfiguration server 236 110. One or more class two productconfiguration rules may be sent from the product configuration server110 to the client device 102. Class Three Anytime that the class Productone product configuration configuration rules are server 110; clientevaluated or any time device 102; network after the class two browser232; and/or product configuration network browser rules are evaluated. Aextension 236. class three product configuration rule is usually aproduct configuration rule that is evaluated for aggregation orcalculation purposes.

TABLE 4 Assignment of Class to Product Configuration Rule Type ClassProduct Configuration Rule Type Class One Non-Conditional Class OneCustomer Conditional Class Two Product Conditional Class Three ProductConditional Aggregation

As discussed above, a model for one or more product configuration ruletypes may be defined according to a meta-language syntax. Themeta-language syntax may comprise an extensible markup language or otherlanguage that includes at least one element of data content and at leastone element identifier that describes the type of content of the atleast one element of data content. One example of a productconfiguration rule defined according to a meta-language syntax is below:

 <?xml version=″1.0″?>  <xs:schemaxmlns:xs=http://www.w3.org/2001/XMLSchemaxmlns:plcm−r=http://www.valuemomentum.com/plcmtargetNamespace=″http://www.valuemomentum.com/plcm″elementFormDefault=″qualified″ attributeFormDefault=″unqualified″> <xs:element name=″PlcmRules″ type=″plcm− r:PlcmRulesType″/> <xs:complexType name=″PlcmRulesType″>  <xs:sequence>  <xs:elementname=″Rules″ type=″plcm-r:RulesType″ maxOccurs=″unbounded″/> </xs:sequence>  </xs:complexType>  <xs:complexType name=″RulesType″> <xs:sequence>  <xs:element name=″ruleType″ type=″xs:string″/> <xs:element name=″isKnockoutRule″ type=″xs:boolean″ minOccurs=″0″/> <xs:element ref=″plcm-r:rulesMetaData″/>  <xs:elementref=″plcm-r:context″ maxOccurs=″unbounded″/>  <xs:choice>  <xs:elementname=″exclusionRules″ type=″plcm- r:coordinationConstraint″minOccurs=″0″ maxOccurs=″unbounded″/>  <xs:element name=″inclusionRules″type=″plcm- r:coordinationConstraint″ minOccurs=″0″maxOccurs=″unbounded″/>  <xs:element name=″unidirectionalInclusionRules″type=″plcm-r:coordinationConstraint″ minOccurs=″0″maxOccurs=″unbounded″/>  <xs:element name=″unidirectionalExclusionRules″type=″plcm-r:coordinationConstraint″ minOccurs=″0″maxOccurs=″unbounded″/>  <xs:element name=″domainReduction″ type=″plcm-r:domainConstraint″ minOccurs=″0″ maxOccurs=″unbounded″/>  <xs:elementname=″validityRules″ type=″plcm- r:coordinationConstraint″ minOccurs=″0″ maxOccurs=″unbounded″/>  <xs:element name=″eligibilityRules″type=″plcm- r:ruleset″ minOccurs=″0″ maxOccurs=″unbounded″/> <xs:element name=″genericRules″ type=″plcm- r:genericRuleset″minOccurs=″0″ maxOccurs=″unbounded″/>  <xs:elementname=″endorsementValidityRules″ type=″plcm- r:coordinationConstraint″minOccurs=″0″ maxOccurs=″unbounded″/>  <xs:elementname=″endorsementDomainReductionRules″ type=″plcm-r:domainConstraint″minOccurs=″0″ maxOccurs=″unbounded″/>  <xs:elementname=″cardinalityRules″ type=″plcm- r:cardinalityConstraint″minOccurs=″0″ maxOccurs=″unbounded″/>  </xs:choice>  </xs:sequence> </xs:complexType>  </xs:schema>

In addition to the product configuration rule types, one or moreconfigurable product models may be defined according to themeta-language syntax. The configurable product model may be representedby a modeling record comprising the meta-language syntax. When a userdesires to define a configurable product, a user may use one or more ofthe client devices 302-308 in communication with the modeling database310 to define the various attributes and attribute values of theconfigurable product based on the modeling record representing theconfigurable product model.

However, as is understood in the art, a product configuration rule, aproduct record, or any other object, may be stored in another formatother than an extensible markup language.

The modeling workbench 116 may be operative to communicate a definedconfigurable product, a product configuration rule, and/or pricing ruleto the product configuration server 110. The definition of theconfigurable product, product configuration rule, and/or pricing rulemay be communicated via the network interface 204, which may be madeaccessible by a service in the service layer 208. As discussed below,the procedure of communicating a defined configurable product, productconfiguration rule, or pricing rule to the product configuration server110 may be considered part of a larger publishing process. During thepublishing process, the product configuration server 110 may create oneor more product records representing the defined object, whether theobject is the configurable product, product configuration rule, orpricing rule. As a configurable product, product configuration rule,and/or pricing rule may have one or more attributes and, depending onthe complexity of the defined configurable product, productconfiguration rule, and/or pricing rule, the attributes and attributevalues for the defined may be divided into multiple records. Forexample, a configurable product, along with the attribute and attributevalues for the configurable product, may be defined across multipleproduct records. However, a configurable product, or any other definedobject, may be represented by a single record.

FIG. 4 illustrates the various components of the layers 208-212leveraged by the product configuration server 110 for providing one ormore configurable products. Each of the layers 208-210 may include oneor more components for implementing the layer. For example, the servicelayer 208 may include product services 402, rules services 404, pricingservices 406, and publishing services 408. Similarly, the engine layer212 may include a product engine 410, a rules engine 412, a pricingengine 414, and a versioning engine 416. In addition, the database layer210 may include various databases, such as a product and product rulesdatabase 418, a rules database 420, and a pricing database 422. Oneexample of commercially available product that implements the databases418-422 established in the database layer 210 and the services 402-408established in the service layer 208 is the iFoundry software product.FIG. 4 is one implementation of the layers 208-212 and alternativecomponents 402-422 of the layers 208-212 or alternative layers 208-212are also possible.

As discussed briefly with reference to FIG. 2, the service layer 208provides one or more services for accessing the database layer 210, theengine layer 212, or any other layer. More particularly, the publishingservice 408 of the service layer 208 may facilitate access to one ormore of the databases 418-422. Through the publishing service 408, themodeling workbench 116 may access one or more databases 418-422 andmodify the records of the databases 418-422. Modifying the records ofone or more databases 418-422 may include adding a record, removing arecord, editing a record, or any other type of modification to therecords of the databases 418-420.

The publishing service 408 may follow a publishing process thatgenerates a one or more configurable product records based on theattributes and attribute values defined using the modeling workbench116. For example, after a configurable product is defined in themodeling workbench 116, the publishing service 408 may facilitate theaddition of the configurable product to the product and product rulesdatabase 418, such as by generating one or more product recordsrepresenting the configurable product. Hence, the product and productrules database may comprise one or more product records that identifyconfigurable products potentially selectable by a user, wherein theproduct records may include product attributes that represent thefeatures of a configurable product. Moreover, each of the databases418-420 may store the one or more records in a meta-syntax, thatincludes at least one element of data content and at least one elementidentifier that describes the type of content of the at least oneelement of data content. The meta-syntax may also include an extensiblemarkup language (“XML”). Hence, in one implementation, the records ofthe databases 418-422 may be stored as one or more XML records.

In addition, one or more of the product records may comprise multiplelevels of attributes, attribute values, or other levels. In other words,a product record may be nested and structured according to a hierarchy.Furthermore, a configurable product may correspond to multiple versionsof a product record, depending on which features of the configurableproduct are to be offered to the user or client device 102. As discussedbelow with reference to FIG. 14, the versioning engine 416 mayfacilitate the selection of a product record from multiple versions ofthe product record.

During the publishing process, the publishing service 408 may facilitatethe generation of one or more attribute binary decision diagram (BDD)structures representative of the product attributes for a configurableproduct. In one implementation, the processor 206 is operative togenerate the one or more attribute BDD structures. However, any othercomponent of the product configuration server 110 may also generate theone or more attribute BDD structures.

To generate the one or more BDD structures, one or more components ofthe product configuration server 110, such as the processor 206, mayanalyze the meta-syntax representation of a configurable product todetermine the attributes of the configurable product and thecorresponding attribute values of the configurable product. Theprocessor 206 may then generate an attribute BDD structure based on thisanalysis. For example, the processor 206 may prepare correspondingattribute BDD structures for each determined configurable productattribute. In yet another implementation, the processor 206 may comparethe attributes of the configurable product with one or more productconfiguration rules to determine which product attributes of theconfigurable product participate in the product configuration rules.Where a product attribute participates in a product configuration rule,the processor 206 may generate a corresponding attribute BDD structurefor the participating configurable product attribute. A productattribute may participate in a product configuration rule when theproduct configuration rule refers to the product attribute. Theparticipating product attribute may be found in any part of a productconfiguration rule, such as the conditional statement, the actionstatement, or any other part of a product configuration rule.

FIGS. 5-10 show various attribute BDD structures 502-1002. FIG. 5 is anillustration of one example of a channel attribute BDD structure 502 fora “Channel” product attribute where the configurable product may be acable television service subscription. The “Channel” product attributemay represent the channels available for the cable television servicesubscription, and the attribute may have one or more attribute values,such as “NBC,” “CBS,” “ABC,” “FOX,” “CNN,” “CNBC,” “Bloomberg,” and“Weather Channel.” Alternative product attribute values are alsopossible.

Each of the product attribute values may be represented by acorresponding binary value. For example, the “NBC” attribute value maycorrespond to the binary value “000.” Similarly, the “CBS” attribute maycorrespond to the binary value “001”. By assigning binary values to oneor more product attribute values, the product configuration server 110is able to expeditiously determine whether a product attribute value isselectable by a customer.

In addition to binary values, an attribute BDD structure may include oneor more offering nodes and non-offering nodes. An offering node mayindicate whether a product attribute value is selectable by a user basedon one or more product configuration rules. A non-offering node mayindicate that the product attribute value is not selectable by a user.Whether an attribute BDD structure includes one or more offering nodesor one or more non-offering nodes may be determined based on whether aproduct configuration rule indicates whether a product attribute isselectable by a user. The channel attribute BDD structure 502 mayinclude one or more offering nodes 504-512 that indicate that theproduct attribute values of “NBC,” “CBS,” “ABC,” “FOX,” “CNN,” “CNBC,”“Bloomberg,” and “Weather Channel” are each selectable by a user basedon one or more product configuration rules.

FIG. 6 is an illustration of one example of a product attribute BDDstructure 602 for a “Product” product attribute where the configurableproduct may be a cable television service subscription. The “Product”product attribute may represent one or more telecommunication productsoffered by a telecommunications service provider and have one or moreattribute values, such as “DC,” (for “Digital Cable”) “HIS,” (for “HighSpeed Internet”) and “Phone.” Alternative product attribute values arealso possible.

Each of the attribute values for the “Product” attribute may berepresented by a corresponding binary value. For example, the “DC”attribute value may correspond to the binary value “00.” Similarly, the“HIS” attribute may correspond to the binary value “01”. Moreover, theproduct attribute BDD structure 602 may include one or more null valuesthat correspond to one or more binary values. For example, the productattribute BDD structure 602 may include a null value that corresponds tothe binary value “11”. The “DC,” “HIS,” and “Phone” attribute values mayeach correspond to an offering attribute node 604-608, whereas the nullvalue may correspond to a non-offering attribute node 610. Hence, thenull value may not be selectable by a customer.

FIG. 7 is an illustration of one example of a premium channels attributeBDD structure 702 for a “Premium Channels” product attribute where theconfigurable product may be a cable television service subscription. The“Premium Channels” product attribute may represent premium channels thatmay be offered as part of a cable television service subscription, andthe “Premium Channels” product attribute may have one or more attributevalues, such as “ST,” “Starz,” “HBO,” “Cinemax,” and “TMC.” Alternativeproduct attribute values are also possible.

Each of the product attribute values may be represented by acorresponding binary value. For example, the “ST” attribute value maycorrespond to the binary value “000”. Similarly, the “Starz” attributevalue may correspond to the binary value “001”. Moreover, the premiumchannels attribute BDD structure 702 may include one or more null valuesthat correspond to one or more binary values. For example, the premiumchannels attribute BDD structure 702 may include a null value thatcorresponds to the binary value “101,” a null value that corresponds tothe binary value “110,” a null value that corresponds to the binaryvalue “111,” or other null values that correspond to other binaryvalues.

In addition, the “ST,” “Starz,” “Phone,” “HBO,” “Cinemax,” and “TMC”attribute values may each correspond to an offering attribute node704-712. Similarly, one or more of the null values may each correspondto a non-offering attribute node 714-718. Hence, the “Premium Channels”product attribute values of “ST,” “Starz,” “HBO,” “Cinemax,” and “TMC”may be offered to a customer for selection whereas the null values maynot be offered to a customer for selection.

FIG. 8 is an illustration of one example of a speed attribute BDDstructure 802 for a “Speed” product attribute where the configurableproduct may be a broadband or Internet subscription. The “Speed” productattribute may represent the speed, such as the download speed and/orupload speed, at which the customer accesses the Internet or otheronline service. The “Speed” product attribute may have one or moreproduct attribute values, such as “12” and “16,” where “12” represents12 megabits per second and where “16” represents 16 megabits per second.Alternative product attribute values are also possible.

Each of the product attribute values may be represented by acorresponding binary value. For example, the “12” attribute value maycorrespond to the binary value “0”. Similarly, the “16” attribute valuemay correspond to the binary value “1”. In addition, the “12” and “16”attribute values may each correspond to an offering attribute node804-806, where the “Speed” product attribute values of “12” and “16” maybe offered to a customer for selection.

FIG. 9 is an illustration of one example of a phone features attributeBDD structure 802 for a “Phone Features” product attribute where theconfigurable product may be a telephone service subscription. The “PhoneFeatures” product attribute may represent the available features for atelephone service. The “Phone Features” product attribute may have oneor more product attribute values, such as “VM,” “CID,” “CW,” and, “DND,”where “VM” represents a voicemail feature, “CID” represents a calleridentification feature, “CW,” represents a call waiting feature, and“DND” represents a do not disturb feature. Alternative product attributevalues are also possible.

Each of the product attribute values may be represented by acorresponding binary value. For example, the “VM” attribute value maycorrespond to the binary value “00”. Similarly, the “CID” attributevalue may correspond to the binary value “01”. In addition, the “VM,”“CID,” “CW,” and “DND” attribute values may each correspond to anoffering attribute node 904-910, where the “Phone Features” productattribute values of “VM,” “CID,” “CW,” and “DND” may be offered to acustomer for selection.

FIG. 10 is an illustration of one example of an on-demand subscriptionattribute BDD structure 802 for an “On-Demand Subscription” productattribute where the configurable product may be a cable televisionservice subscription. The “On-Demand” product attribute may representOn-Demand channels that a customer may subscribe to while selectingprogramming. The “On-Demand Subscription” product attribute may have oneor more product attribute values, such as “BX” and “WWE,” where “BX”represents a boxing channel and where “WWE” represents a World WrestlingEntertainment channel. Alternative product attribute values are alsopossible.

Each of the product attribute values may be represented by acorresponding binary value. For example, the “DM” attribute value maycorrespond to the binary value “0”. Similarly, the “WWE” attribute valuemay correspond to the binary value “1”. In addition, the “DM” and “WWE”attribute values may each correspond to an offering attribute node1004-1006, where the “On-Demand Subscription” product attribute valuesof “DM” and “WWE” may be offered to a customer for selection.

In preparing the product attribute BDD structures 502-1002, the productconfiguration server 110 may also assign a query-language formattedexpression to one or more of the product attribute BDD structures502-1002. In one implementation, the query-language formatted expressionmay be an XPATH expression. However, other query-language formattedexpressions may also be possible. The query-language formattedexpression may identify the location of the product attributerepresented by the one or more product attribute BDD structures 502-1002in one or more corresponding configurable product records. One exampleof a query-language formatted expression is “product[name=‘CableTelevision’]/attribute-numeric[name=‘PhoneFeatures’]”.

In another implementation, the product configuration server 110 mayassign a query-language formatted expression to each attribute node ofat least one attribute BDD structure. In this implementation, each ofthe query-language formatted expressions may identify the productattribute value corresponding to the attribute node of the assignedquery-language formatted expression. Moreover, in this implementation,the product configuration server 110 may evaluate the at least oneattribute BDD structure to identify whether at least one attribute nodeof the at least one attribute BDD structure is a non-offering attributenode. When the at least one attribute node of the at least one attributeBDD structure is identified as a non-offering attribute node, theproduct configuration server 110 may evaluate the query-languageformatted expression assigned to the at least one non-offering attributenode to identify a location of the product attribute value in thecorresponding at least one product record.

Once evaluated, the product configuration server 110 may prepare acustomized product record for sending to the client device 102. Theproduct configurations server 110 may prepare the customized productrecord by including the product attribute value of the at least oneproduct record in the at least one customized product record andidentifying that the product attribute value of the at least onecustomized product record is not selectable by the user. As discussedbelow, a flag or other marker may be embedded in the customized productrecord to indicate that the product attribute value corresponding to thenon-offering node is not selectable by the user. Additionally, a flag orother marker may be embedded in the customized product record toindicate that a product attribute value corresponding to an offering isselectable by the user.

FIG. 11 illustrates one example of a modified product attribute BDDstructure 1102 that the product configuration server 110 has prepared inaccordance with a product configuration rule 1104. In modifying aproduct attribute BDD structure, one or more components of the productconfiguration server 110 may modify the product attribute BDD structure.For example, the product engine 410, the rules engine 412, the pricingengine 414, or any other engine may modify the product attribute BDDstructure to yield a modified product attribute BDD structure 1102. Inaddition, one or more devices other than the product configurationserver 110 may modify the product attribute BBD structure to obtain amodified product attribute BDD structure 1102. For example, the clientdevice 102 may modify a product attribute BDD structure. As explainedbelow with reference to FIG. 14, the client device 102 may include anetwork browser and/or network browser extension operative to modify aproduct attribute BDD structure.

In modifying a product attribute BDD structure, an engine, such as theproduct engine 410, may first determine whether one or more attributesof a configurable product participates in a product configuration rule1104. The product engine 410 may determine that an attributeparticipates in a product configuration rule 1104 by analyzing themeta-syntax of the product configuration rule 1104 to identify the oneor more attributes referenced by the product configuration rule 1104.

As shown in FIG. 11, the exemplary product configuration rule 1104states that the product attribute values “Bloomberg” and “WeatherChannel” are not offered in a zip code having a value of 08873 or 07080.TO prepare the modified attribute BDD structure 1102 based on this rule,the product configuration server 110 may first wait for a request tooffer the configurable product associated with this product attribute toa customer. When the product configuration server 110 receives therequest to offer this configurable product to the customer, the productconfiguration server 110 may request additional information about thecustomer or where the customer intends to use the service. Hence, theproduct configuration server 110 may request that the customer provide azip code customer attribute value corresponding to the zip code wherethe customer intends to use the configurable product. Alternatively, theproduct configuration server 110 may receive the zip code customerattribute value as part of the request to offer the configurableproduct.

In this example, when the product configuration server 110 receives azip code customer attribute value indicating that the customer intendsto use the configurable product in the zip code 08873 or 07080, theproduct configuration server 110 may first retrieve the productattribute BDD structure from one or more of the databases 418-422. Afterretrieving the product attribute BDD structure from the one or moredatabases 418-422, the product configuration server 110 may then reviewthe offering nodes 1106-1120 to determine which offering nodes 1118-1120are associated with the product attribute values “Bloomberg” and“Weather Channel.” In one implementation, the product attribute values“Bloomberg” and “Weather Channel” are represented as binary values andthe product configuration server 110 references the corresponding binaryvalues to modify the product attribute BDD structure. The productconfiguration server 110 then prepares the modified product attributeBDD structure 1102 by replacing the offering nodes 1118-1120 with thenon-offering nodes 1122-1124. Hence, the non-offering node 1122indicates that the product attribute value “Bloomberg” is not selectableand the non-offering node 1124 indicates that the product attributevalue “Weather Channel” is not selectable when a customer attributevalue indicates that the zip code for the intended use of theconfigurable product is in the 08873 zip code or the 07080 zip code.

Moreover, in preparing the modified product attribute BDD structure1102, the product configuration server 110 may prepare one or morecustomized product records that have been modified to reflect that oneor more product attribute values are not selectable by a customer. Inone implementation, the preparation of the one or more customizedproduct records may occur after evaluating all applicable productconfiguration rules and/or updating one or more applicable productattribute BDD structures.

To prepare one or more customized products records to reflect that oneor more product attribute values are not selectable by a customer, theproduct configuration server 110 may evaluate a query-language formattedexpression assigned to a product attribute BDD structure to locate theproduct attribute in the corresponding product record. The productconfiguration server 110 may then identify whether a product attributevalue for the product attribute has a non-offering node in acorresponding modified attribute BDD structure 1102 or other attributeBDD structure. In addition, the product configuration server 110 mayinclude the product attribute value of the product attribute for acorresponding product record in the customized product record. When theproduct configuration server 110 includes the attribute value in thecustomized product record, the product configuration server 110 may notinitially indicate that the attribute value in the customized productrecord is not selectable by the user. However, when the productattribute value of the attribute has a corresponding non-offering nodein a modified attribute BDD structure 1102, or other attribute BDDstructure the product configuration server 110 may identify that theproduct attribute value of the customized product record is notselectable by the user. For example, the product configuration server110 may include a flag or marker in the customized product record toindicate that the product attribute value corresponding to thenon-offering node is not selectable by the user. Moreover, a flag ormarker may be embedded in the customized product record to indicate thatthe product attribute value corresponding to an offering node isselectable by the user. The flag or marker embedded in the customizedproduct record may be identified according to an extensible markuplanguage.

In addition to preparing a modified product attribute BDD structure1102, the product configuration server 110 may prepare one or merged BDDstructures in accordance with a product configuration rule. FIG. 12illustrates one example of a merged product attribute BDD structure 1202in accordance with another product configuration rule 1204. Theexemplary product configuration rule 1204 indicates that a PremiumChannel product attribute value “HBO” must be provided with the Channelproduct attribute value “Bloomberg” when a customer attribute valueindicates that a customer is a “gold” customer.

In preparing a merged product attribute BDD structure 1202, the productconfiguration server 110 may analyze a product configuration rule todetermine the product attributes that participate in the rule. Theproduct configuration server 110 may determine which product attributesparticipate in the product configuration rule 1204 by identifying theproduct attribute values referenced in the product configuration rule1204, and then correlating the referenced product attribute values withtheir corresponding product attributes. Accordingly, in oneimplementation, the product configuration server 110 may identify thatthe product configuration rule 1204 references the product attributevalues “HBO” and “Bloomberg,” and these product attribute valuescorrelate to the product attributes correlate to the “Premium Channels”and “Channels” product attributes, respectively.

Once the product attributes are identified, the product configurationserver 110 may then retrieve one or more corresponding product attributeBDD structures from one or more databases, such as the product andproduct rules database 418 and/or the rules database 420. In the exampleshown in FIG. 11, the product configurations server 110 may retrieve the“Channels” product attribute BDD structure 502 and the “PremiumChannels” product attribute BDD structure 702. The product configurationserver 110 may then establish a link 1206 between an offering node 1208corresponding to the “Premium Channels” product attribute value “HBO”and the root node of the “Channels” product attribute BDD structure 502.In an alternative implementation, the product configuration server 110may establish the link 1206 between an offering node corresponding tothe “Channels” product attribute value “Bloomberg” and a root node ofthe “Premium Channels” product attribute BDD structure 702.

The link 1206 between the “Premium Channels” product attribute BDDstructure 702 and the “Channels” product attribute BDD structure 502 maybe a product configuration rule. As one or more product configurationrules may provide one or logical relations between various productattributes and the product attribute values may be adjusted based on theevaluation of a product configuration rule, when a product configurationrule is evaluated, the product configuration server 110 may apply binarylogic to the corresponding product attribute BDD structures. Moreover,the link 1206 may be any another type of linking structure now known orlater developed.

After establishing a link 1206 between the “Premium Channels” productattribute BDD structure 702 and the “Channels” product attribute BDDstructure 502 to obtain the merged product attribute BDD structure 1202,the product configuration server 110 may evaluate the merged productattribute BDD structure 1202 in preparing one or more customized productrecords for a customer, when a customer attribute value indicates thatthe customer is a “gold” customer. Hence, the product attribute valuesfor the one or more customized product may reflect that when thecustomer selects the product attribute value “HBO,” that the productattribute value “Bloomberg” will also be selected. Thus, the creation ofa merged product attribute BDD structure 1202 facilitates the automaticselection of product attribute values when a product configuration ruleestablishes a relationship between one or more product attribute values.

Although the product configuration rule 1204 in FIG. 12 establishes arelationship between a first product attribute BDD structure 702 and asecond product attribute BDD structure 502, a product configuration rulemay establish a relationship between any number of product attribute BDDstructures, including more than two product attribute BDD structures.Moreover, while the product configuration rule 1204 references a firstcustomer attribute, represented by the “gold” customer attribute value,a product configuration rule may reference any number or any type ofcustomer attribute values. Hence, it is possible that a merged productattribute BDD structure includes a significant number of productattribute BDD structures when the product configuration server 110evaluates a product configuration rule having multiple customerattribute values.

FIG. 13 illustrates one example of a logic flow 1302 for a publishingprocess between the modeling workbench 116 and the product configurationserver 110. In one implementation, the logic flow 1302 includes apublish operation 1304, a process objects operation 1306, a processrules operation 1308, and a store product attribute BDD structureoperation 1310. Other operations may also be possible. Table 5 belowdescribes the operations 1304-1310 shown in FIG. 13.

TABLE 5 Operations of a Publishing Process (1302) Operation DescriptionPublish (1304) The publish operation (1304) may include receiving aninitiation request for publishing one or more entities, such as aproduct configuration rule, a configurable product, or other entity.Many of the operations 1306-1310 operate within the scope of the publishoperation 1304. In one implementation, when the other operations1306-1310 have completed, the application that initiated the publishoperation 1304 may receive a response indicating the success or failureof the publish operation 1304. Process Objects (1306) Based on theinitiation request for the publish operation (1304), the process objectsoperation (1306) may include gathering one or more structure detailsregarding the configurable product or product configuration rule formthe initiation request, transforming the structure details into objects,such as XML files, and then sending the objects on for furtherprocessing. Examples of structure details include productattributes/entities, relations between one or more product attributes,possible attribute values for the product attributes, and other productstructure information. Process Rules (1308) The process rules operation(1308) may gather one or more product configuration rules and generateproduct attribute BDD structures for the product attributes that aredetermined to participate in the one or more product configurationrules. When a product configuration rule is selected, the productconfiguration rule may be assessed for the product attributes thatparticipate in the product configuration rule. In one implementation,for each of the product attributes determined to participate in one ormore product configuration, a product attribute BDD structure may becreated. The product attribute BDD structures may be generated as an XMLstream, a flat data stream, objects, or combinations thereof. Once allthe rules are processed, a successful message may be returned. StoreProduct Attribute BDD The store product attribute Structure (1310) BDDstructure operation (1310) may store a product attribute BDD structuregenerated for various product attributes into one or more databases,such as the product and product rules database 418, the rules database420, or other database. Storing the product attribute BDD structure mayalso include generating supporting metadata that may be used for searchand retrieval during a service execution phase.

Table 6 below describes possible messages that may be passed during theoperations 1304-1310 shown in FIG. 13.

TABLE 6 Messages of a Publishing Process (1302) Message DescriptionpublishConfigRules publishConfigRules may be a trigger message to startthe publish process (1302). The publishConfigRules message may providedetails of the service context that may be the basis for all subsequentsearch and query activities related to the publish process.ProductStructureXML The ProductStructureXML message may represent theconfigurable product structure with attributes, attribute relations, andattribute values that are gathered and passed to the process objectsoperations (1306) to process the configurable product definition. TheProductStructureXML message may facilitate the creation of the objectsthat may be used by subsequent processes. The created objects may bereturned in a response to a completion of the process objects operations(1306). RulesXML The RulesXML message may represent the collection ofone or more product configuration rules that may be applicable for apublish service request context. The product configuration rules may bereturned to assist in the generation of a product attribute BDDstructure for the product configuration attributes determined toparticipate in one or more product configuration rules. StoreBDDs TheStoreBDDs message may represent all the product attribute BDD structuresgenerated for the participating product attributes. The data passed inthis request may be stored in one or more databases for subsequentretrieval. Success The Success message represents a message indicating asuccessful execution of an operation or process.

Turning next to FIG. 14 is an illustration of one example of clientdevice 102 in communication with the product configuration server 110 toconfigure a configurable product. During the configuration of theconfigurable product, the client device 102 may communicate, directly orindirectly, with one or more layers 208-210 of the product configurationserver 110 and, in particular, with one or more services 402-406.

The client device 102 may include a network browser 232 having a networkapplication 234 working in conjunction with a network browser extension236 to communicate with the product configuration server 110, and inparticular, with the product services 402. The product configurationserver 110 may make available a website on a network, such as theInternet or an intranet, and the network browser 232 may communicatewith the product configuration server 110 via the network website.Moreover, the network website may function as the network application234. Hence, requests passed to and responses received from the productconfiguration server 110 may be transmitted or displayed via the networkapplication 234.

When the network browser 232 initially accesses the productconfiguration server 110 via the network application 234, the networkapplication 234 may request that the client device 102 provide initialcustomer information. The initial customer information may include suchcustomer attributes as the location where the configurable product maybe used, customer demographic information, the location where thecustomer lives, or any other type of customer information. The customerinformation may be transmitted from the client device 102 to one or moreservices 402-406 of the product configuration server 110, such as theproduct services 402. The services 402-406 may then pass the customerinformation to one or more engines 410-416. The customer information maybe initially used by the product configuration server 110 to determinewhich configurable products may apply to the customer.

In deciding which configurable products may be selectable by a customeror client device 102, the product configuration server 110 may executeone or more product configuration rules using the provided customerinformation as input for evaluating the product configuration rules.However, as the product configuration server 110 may have many differentproduct configuration rules, the product configuration server 110 mayinvoke the versioning engine 416 to select the appropriate productconfiguration rule to evaluate given a set of attribute values (customerattribute values, product attribute values, or otherwise).

In one implementation of the product configuration server 110, theproduct configuration server 110 may store or be established withdifferent versions of a product configuration rule, a product record, aproduct attribute BDD structure, or any other object. For example,different versions of a product configuration rule may be establishedfor evaluation according to different zip codes, different time zones,during different time periods, or any other criteria. Similarly,different versions of a configurable product may be established fordifferent zip codes, different time periods, or any other criteria.

Although versions of a product configuration rule or configurableproduct may overall be similar, there may be subtle differences betweenthe versions of the product configuration rule and/or configurableproduct. As there may be different versions of a product configurationrule and/or different versions of a configurable product, the productconfiguration server 110 may maintain different versions of productattribute BDD structures to account for the differences between theversions of the product configuration rule and/or configurable product.In generating a product attribute BDD structure, the productconfiguration server 110 may create a single version of the productattribute BDD structure for a product attribute where the productattribute does not change between multiple versions of a configurableproduct.

As discussed with reference to Tables 3-4, the product configurationserver 110 may evaluate one or more product configuration rulesaccording to the class of the product configuration rule. Hence, whenthe request for the configurable product is first received, the productconfiguration server 110 may evaluate product configuration rules ofclass one. For example, the product configuration server 110 mayevaluate non-conditional product configuration rules and customerconditional product configuration rules. Evaluating the class oneproduct configuration rules may indicate which version of theconfigurable product and/or product attribute BDD structure to use tofurther select a configurable product for the customer. In oneimplementation, the versioning engine 416 may provide the details andspecifics for one or more product configuration rules and correspondingBDD attribute structures to use for a user selection.

Moreover, after evaluating the class one product configuration rules,the product configuration server 110 may prepare one or more customizedproduct records for the client device 102. Preparing the one or morecustomized product records may first include determining the one or moreproduct attribute BDD structures that correspond to product attributesof the configurable product that participate in one or more productconfiguration rules. Once a product attribute BDD structure isdetermined, the product configuration server 110 may evaluate thequery-language formatted expression assigned to the product attributeBDD structure to locate the corresponding product attribute in thecorresponding product record and then identify whether a productattribute value for the product attribute has a correspondingnon-offering node in the determined product attribute BDD structure. Inaddition, the product configuration server 110 may identify whether aproduct attribute value for the product attribute has a correspondingoffering node in the determined product attribute BDD structure.

After identify the non-offering and offering product attribute values,the product configuration server 110 may include the product attributevalues of the product attribute of the corresponding product record inthe customized product record. In one implementation, when the productattribute value of the product attribute has a correspondingnon-offering node in the product BDD structure, identify that theproduct attribute value of the one customized product record is notselectable by the user. For example, the product configuration server110 may include a flag or marker in the customized product record toindicate whether the product attribute value is selectable by the user.Hence, a customized product record may contain similar productattributes and product attribute values as the initial product recordfor the configurable product, but the product configuration server 110may tailor the customized product record according to the evaluatedproduct configuration rules requesting the client device 102.

Once a customized product record is prepared, the product configurationserver 110 may transmit the customized product record to the clientdevice 110. In addition, the product configuration server 110 maytransmit one or more product attribute BDD structures and/or productconfiguration rules. For example, the product configuration server 110may transmit class two product configuration rules to the client device102 for evaluation by the client device 102. Examples of class twoproduct configuration rules include product conditional productconfiguration rules. Transmitting the class two product configurationrules to the client device 102 may offload the processing power requiredto evaluate the class two product configuration rules to the clientdevice 102 and allow the product configuration server 110 to receive andprocess requests for configurable products from other client devices.

When the client device 102 receives the customized product record, theone or more product attribute BDD structures, and the class two productconfiguration rules, the client device 102 may display the configurableproduct, with its corresponding product attributes and product attributevalues, to the user for configuration. The configurable product may bedisplayed using the network browser 232 in conjunction with the networkbrowser extension 236. Selectable product attribute values may bedisplayed to the user for configuring the configurable product, whereasnon-selectable product attribute values may not be displayed to theuser. Alternatively, the non-selectable product attributes may bedisplayed, but non-selectable. As the user selects various productattribute values, the client device 102 may evaluate one or more classtwo product configuration rules to display various configurations of theconfigurable product. To evaluate the one or more class two productconfiguration rules, the client device 102 may employ the use of thenetwork browser extension 236. Hence, the evaluation of the class twoproduct configuration rules may appear transparent to the user whileinteracting with the network browser 232 and the network application234.

When the user has finished configuring a configurable product, the usermay initiate a transmission to the product configuration server 110 toindicate that the user has finished configuring the configurableproduct. The transmission to the product configuration server 110 mayinclude the product attribute values that the user selected for theconfigured product. When the product configuration server 110 receivesthe transmission from the client device 102, the product configurationserver 110 may evaluate one or more class three product configurationrules, such as product conditional aggregation product configurationrules to finalize the attribute values of the configurable product.Depending on how the class three product configuration rule isstructured, the client device 102 may also evaluate one or more classthree product configuration rules. After evaluation of the class threeproduct configuration rules, the client device 102 may receive aresponse from the product configuration server 110 that represents theconfigured product, including any product attribute values that wereadded to or removed from the configured product based on the evaluationof the class three product configuration rules.

Turning next to FIGS. 15-20 and with reference to FIG. 3, FIGS. 15-20illustrate exemplary graphical user interfaces for interacting with themodeling workbench 116 for configuring a configurable product and thevarious types of product configuration rules. FIG. 15 illustrates oneexample of a graphical user interface 1502 for preparing a productdefinition for a configurable product. The product definition may definethe various product attributes and product attribute values for theconfigurable product. The graphical user interface 1502 includes threesections for preparing the product definition, including a versioningsection 1504 for interacting with the various versions of the productdefinition, a product assembly section 1506 for interacting with thevarious product attributes of the configurable product, and a productdetail section 1508 for interacting with the details of the productdefinition.

FIGS. 16-18 illustrate an exemplary graphical user interface 1602 forinteracting with the modeling workbench 116 to configure various productconfiguration rules of the non-conditional rule type. As discussedbriefly above, a product configuration rule of the non-conditional ruletype may be a class one product configuration rule; that is, a productconfiguration rule evaluated by the product configuration server 110.Starting with FIG. 16, this figure illustrates one example of thegraphical user interface 1602 for configuring a collision coverageproduct configuration rule 1610. In one implementation, the collisioncoverage product configuration rule 1610 states that if a collisioncoverage attribute is offered, then a comprehensive coverage attributeis selected. As shown in FIG. 16, the graphical user interface 1602includes a versioning section 1604 to select a version of the productconfiguration rule, a view section 1606 to view and/or edit thecollision coverage product configuration rule 1610, and a rule detailsection 1608 to view and/or edit various details of the collisioncoverage product configuration rule 1610. As shown in FIGS. 17-21, thegraphical user interface 1602, including the sections 1604-1608, may beused to configure other product configuration rules and/or other productconfiguration rule types.

FIG. 17 illustrates another example of the graphical user interface1602. In FIG. 17, the graphical user interface 1602 displays the detailsfor a coverage exclusion product configuration rule 1702. In oneimplementation, the coverage exclusion product configuration rule 1702states that a rental reimbursement attribute and an emergency roadservice attribute are mutually exclusive.

FIG. 18 illustrates a further example of the graphical user interface1602. In FIG. 18, the graphical user interface 1602 displays the detailsfor a bodily injury accident limit product configuration rule 1802. Inone implementation, the bodily injury accident limit productconfiguration rule 1802 states that a bodily injury accident limitattribute value must be greater than 100 if a driver is older than 30years of age. The graphical user interface may further display variousattribute values 1804 that may be selected by a user configuring thebodily injury accident limit product configuration rule 1802 foroffering to a customer when the bodily injury accident limit productconfiguration rule 1802 is evaluated for a driver older than 30 years ofage.

FIG. 19 illustrates yet another example of the graphical user interface1602. In FIG. 19, the graphical user interface 1602 displays the detailsfor several bodily injury accident limit product configuration rules1902. However, in contrast to the bodily injury accident limit productconfiguration rule 1802 shown in FIG. 18, the bodily injury accidentlimit product configuration rules 1902 may be of the product conditionalrule type. Moreover, the bodily injury accident limit productconfiguration rules 1902 may be class two product configuration rules;that is, product configuration rules that are evaluated by the clientdevice 102 and/or the product configuration server 110. As shown in FIG.19, the bodily injury accident limit product configuration rules 1902include such rules as “If the bodily injury per person limit is 20, thenthe bodily injury per accident limit is 40,” or “If the bodily injuryper person limit is 25, then the bodily injury per accident limit is50.”

FIG. 20 illustrates yet a further example of the graphical userinterface 1602. In FIG. 20, the graphical user interface 1602 displaysthe details for an earthquake summation product configuration rule 2002.In one implementation, the earthquake summation product configurationrule 2002 states that an earthquake summation insured is derived from amaterial damage sum insured. The earthquake summation productconfiguration rule 2002 is one example of a product conditionalaggregation rule, which may be a class three product configuration rule.

Turning next to FIGS. 21-32, and with reference to FIG. 14, areexemplary graphical user interfaces for interacting with a networkapplication 234. The network application 234 may be operative to receiveinput from a user for configuring an insurance product. FIG. 21illustrates one exemplary graphical user interface 2102 that may bedisplayed to a user when a user first engages the network application234. Initially, the network application 234 may request that the userselect a configurable product to configure. As shown in FIG. 22, theconfigurable products initially selectable by the user may include“Bachat Beema,” “Easy Health,” “Personal Auto,” and “Standard FireSpecial Perils.” FIGS. 22-32 display graphical user interfaces as if thecustomer had selected the “Personal Auto” configurable product.

FIG. 22 illustrates one example of a graphical user interface 2202 forproviding and selecting various customer attribute values for aconfigurable product, such as the “Personal Auto” configurable productreferred to in FIG. 22 above. The graphical user interface 2202 may beprovide one or more customer attribute values for one or more customerattributes to the product configuration server 110. For example, thecustomer may provide attribute values for a driver experience attribute,a driver age attribute, an automobile year attribute, a vehicle typeattribute, a vehicle cost attribute, or other customer attributes. Theattribute values for the various customer attributes shown in FIG. 22may be transmitted to the product configuration server 110 forevaluating one or more class one product configuration rules. After theproduct configuration server 110 has evaluated the one or more class oneproduct configuration rules, the product configuration server 110 mayinstruct the network application 234 to display additional graphicaluser interfaces for further configuring the configurable product.

With reference to FIG. 16, FIGS. 23-24 illustrate examples of agraphical user interface 2302 and 2402 that may be displayed after thegraphical user interface 2202. In particular, FIGS. 23-24 illustrate anexample where the collision coverage product configuration rule 1610 maybe evaluated based on a selected attribute value. As shown in FIG. 23, agraphical user interface 2302 may include the option of selecting acollision attribute 2304 or a comprehensive attribute 2306. In FIG. 23,neither the collision attribute 2304 nor the comprehensive attribute2306 is selected. However, as the collision cover product configurationrule 1610 provides, when the collision attribute 2304 is selected, thecomprehensive attribute 2306 must also be selected. The evaluation ofthe collision coverage product configuration rule 1610 is illustrated inFIG. 24. In FIG. 24, a customer has selected the collision attribute2304, which caused the evaluation of the collision coverage productconfiguration rule 1610, and thereby has caused the automatic selectionof the comprehensive attribute 2306. In other words, selecting thecollision attribute 2304 automatically caused the selection of thecomprehensive attribute 2306. The automatic selection of thecomprehensive attribute 2306 is one example of an evaluation of aproduct configuration rule of the non-conditional product configurationrule type.

With reference to FIG. 19, FIGS. 25-29 illustrate various examples ofgraphical user interfaces 2502-2902 displayed during the evaluation of aproduct configuration rule of the product conditional rule type. Inparticular, the various graphical user interfaces 2502-2902 illustratethe evaluation of the bodily injury accident limit product configurationrules 1902. Starting with FIG. 25, a graphical user interface 2502 maydisplay selectable attribute values for a bodily injury per accidentlimit attribute 2504 and a bodily injury per person limit attribute2506. As shown in FIG. 26, when the bodily injury per person limitattribute is an attribute value other than “20,” “25,” or “50,” multiplebodily injury per accident product attribute values may be selectable,such as “40.0,” “50.0,” “100.0,” “300.0,” “500.0,” or other attributevalues.

In FIGS. 26-29, the selection of an attribute value for the bodilyinjury per person limit attribute 2506 may limit which attribute valuesfor the bodily injury per accident limit attribute 2504 are offered orselectable by the customer. In FIG. 26, when the bodily injury perperson limit attribute value is selected as “20.0,” the bodily injuryaccident limit product configuration rules 1902 may be evaluated todetermine that the only selectable bodily injury per accident limitattribute value is “40.0.” Similarly, FIGS. 27-29 illustrate that whenthe bodily injury per person limit attribute is changed to “25.0,” theclient device 102 and/or the product configuration server 110 maydetermine, based on evaluating the bodily injury accident limit productconfiguration rules 1902, that the only selectable attribute value forthe bodily injury per accident limit attribute 2504 is “50.0.” Although,as FIG. 29 illustrates, one or more attribute values for the bodilyinjury per accident limit attribute 2504 may be displayed to thecustomer even when the bodily injury per person limit attribute value isselected as “25.0,” these other attribute values may not be selectableby the customer. In other words, the evaluation of one or more productconfiguration rules may limit which attribute values are selectable by acustomer, even though the non-selectable values are displayed to thecustomer. In other implementations of the graphical user interfaces2602-2902, non-selectable attribute values may not be displayed to thecustomer.

Turning next to FIGS. 30-32, and with reference to FIG. 20, thesefigures illustrate various examples of graphical user interfaces3002-3202 displayed during the evaluation of the earthquake summationproduct configuration rule 2002. Referring to the earthquake summationproduct configuration rule 2002, graphical user interfaces 3002-3202illustrate that an earthquake sum insured product attribute 3008 may bedetermined based on a set of deductible product attributes 3004 and aset of coverages product attributes 3006. More generally, and withreference to FIGS. 30-32, a product aggregation rule may be defined forany of the sum insured fields that may derive its value from other suminsured fields illustrated in the graphical user interfaces 3002-3202.

Turning next to FIG. 33, and with reference to FIG. 14, is anillustration of one example of logic flow 3302 for preparing acustomized product record for sending in response to a request toconfigure a configurable product. Initially, the product configurationserver 110 may receive a request from the client device 102 to viewconfigurable products (Block 3304). As part of an initial response, theproduct configuration server 110 may present a list of configurableproducts. The product configuration server 110 may then receive aselection of a configurable product to configure and may then retrieveone or more product records for the selected configurable product (Block3306).

After retrieving the one or more product records, the productconfiguration server 110 may then determine which product configurationrules should be initially evaluated, such as class one productconfiguration rules. The product configuration server 110 then retrievesthe class one product configuration rules (Block 3308) and, in oneimplementation, for each class one product configuration rule, theproduct configuration server 110 may identify one or more productattributes of the configurable product that participate(s) in the classone product configuration rules (Block 3310).

Based on the identified product attributes, the product configurationserver 110 may then retrieve corresponding product attribute BDDstructures (Block 3312). The product configuration server may thenrefine the variables of the product attribute BDD structures based onthe selected product attributes and product configuration rules (Block3314). Refining the variables of the product attribute BDD structuresmay include an instance where the allowed channel options for a userrequest may be reduced from “NBC”, “CBS”, “ABC”, “FOX”, “CNN”, “CNBC”,“Bloomberg”, “Weather Channel” to “NBC”, “CBS”, “ABC”, “FOX”, “CNN”,“CNBC”. i.e., based on a user request and a selected productconfiguration rule. After refining the variables of one or more of theproduct attribute BDD structures, the product configuration server 110may then generate one or more merged product attribute BDD structures,such as the merged product attribute BDD structure 1202 shown in FIG.12, based on the product configuration rules in which one or moreproduct attributes participate (Block 3316).

Next, the product configuration server 110 may apply class two productconfiguration rules to selected product attributes (Block 3318). Theproduct configuration server 110 may then generate a customized productrecord for sending in response to the request for the configurableproduct (Block 3320).

FIG. 34 illustrates one example of logic flow 3402 for generating thecustomized product record. The product configuration server 110 mayfirst retrieve or analyze the product record for the configurableproduct to identify the attributes of the configurable product (Block3404). The product configuration server 110 may base the attributes ofthe customized product record on the attributes of the initial productrecord. Then, the product configuration server 110 may analyze theproduct configuration rules, such as the class one, two, or three,product configuration rules, and retrieve attribute values to include inthe customized product record based on one or more merged productattribute BDD structures or other product attribute BDD structures(Block 3406). Thereafter, the product configuration server 110 mayreference the XPATH expressions of the one or more merged productattribute BDD structures or other product attribute BDD structures toidentify offering and non-offering attribute values (e.g., selectableand non-selectable attribute values) for the product attributes of thecustomized product record (Block 3408). The foregoing actions of FIG. 34may be repeated for each of the product attributes of the configurableproduct that are to be included in the customized product record (Block3410).

Referring back to FIG. 33, the product configuration server may thenretrieve one or more class two product configuration rules to send inresponse to the request for the configurable product (Block 3324).Finally, the product configuration server 110 may then send thecustomized product record, one or more class two product configurationrules, and one or more corresponding product attribute BDD structures(merged or otherwise), in response to the request for the configurableproduct (Block 3326).

Referring next to FIG. 35 is an illustration of one example of logicflow 3502 for displaying selectable attribute values to a customer basedon the customized product record. The logic flow 3502 may be implementedby the client device 102, such as by the network browser 232, thenetwork browser extension 236, the network application 234, or any othercomponent of the client device 102.

Initially, the client device 102 may receive the various productattribute BDD structures, the class two product configuration rules, andthe customized product record from the product configuration server 110.Thereafter, the client device 102 may generate one or more mergedproduct attribute BDD structures for the product attributesparticipating in the class two product configuration rules using thecustomized product record to identify which product attributesparticipate in the class two product configuration rules (Block 3504).The client device 102 may also apply one or more class two productconfiguration rules to selected product attributes displayed on one ormore graphical user interfaces (Block 3504). The client device 102 maythen generate Hypertext Markup Language (“HTML”) identifiers for thenetwork application 234 to establish relationships between the XPATHexpressions of the various product attribute BDD structures and thenetwork application elements of the network application (Block 3506).The HTML identifiers are one example of a mechanism by which the networkbrowser 232 or the network application 234 may refer to the XPATHexpressions.

The client device 102 may then determine which attribute values areselectable by a customer using the network browser 232. For example, theclient device 102 may assign selectable values as HTML elements aftersearching through the one or more merged product attribute BDDstructures to determine which attribute values are selectable ornon-selectable (Block 3508). Thereafter, the client device 102 mayinteractively interface with the network browser 232 to validate userselections by validating the user selections against the one or moremerged product attribute BDD structures or other product attribute BDDstructures (Block 3510).

Referring to FIG. 36 is an illustration of other actions that one ormore of the engines 410-416 may take in response to one or morerequests. For example, with regard to the product engine 410, theproduct engine 410 may repeat the product attribute BDD structure searchprocess for the class three product configuration rules in response toproduct search request (Block 3602) and send a product response thatincludes the results of this product attribute BDD structure search(Block 3604). The product attribute BDD structure search based on classthree product configuration rules may occur at any time after a requestfor a configurable product is received. For example, the productattribute BDD structure search based on class three productconfiguration rules may occur prior to sending a customized productrecord to the client device 102 or even after sending the customizedproduct record to the client device 102.

With regard to the rules engine 412, in response to a productconfiguration rule evaluation request (Block 3606) the rules engine 412may evaluate one or more product configuration rules to facilitate thegeneration of the one or more product attribute BDD structures.Moreover, the rules engine 412 may determine which product configurationrules to evaluate by filtering the various product configuration rulesusing the versioning engine (Block 3608). The product configuration ruleevaluation request may be received externally from any system, such asfrom the client device 102, or internally from any component, such asthe product engine 410.

With regard to the pricing engine 414, the pricing engine 414 may takeone or more pricing actions in response to a pricing request (Block3610). For example, the pricing engine 414 may execute one or morepricing flows by selecting valid pricing flows based on attributevalues, such as customer attribute values or product attribute values(Block 3612). In addition, the pricing engine 414 may execute one ormore calculations by selecting valid calculations based on one or moreattribute values, such as the customer attribute values or productattribute values (Block 3614). Furthermore, the pricing engine 414 mayconduct one or more table lookups in a pricing table based on thecustomer attribute values and/or the product attribute values (Block3616).

The systems may be implemented in software, hardware, or a combinationof software and hardware. The systems, logic, and/or modules may beimplemented in a computer programming language, such as C# or Java, orany other computer programming language now known or later developed.The systems, logic, and/or modules may also be implemented in a computerscripting language, such as JavaScript, PHP, ASP, or any other computerscripting language now known or later developed. Furthermore, one ormore of the systems, logic, and/or modules may be implemented using acombination of computer programming languages and computer scriptinglanguages.

Furthermore, the systems may be implemented with additional, different,or fewer components. As one example, a processor or any other logic orcomponent may be implemented with a microprocessor, a microcontroller, aDSP, an application specific integrated circuit (ASIC), programinstructions, discrete analog or digital logic, or a combination ofother types of circuits or logic. As another example, memories may beDRAM, SRAM, Flash or any other type of memory. The systems may bedistributed among multiple components, such as among multiple processorsand memories, optionally including multiple distributed processingsystems.

Logic, such as programs or circuitry, may be combined or split amongmultiple programs, distributed across several memories and processors,and may be implemented in or as a function library, such as a dynamiclink library (DLL) or other shared library. The DLL, for example, maystore code that implements functionality for a specific module as notedabove. As another example, the DLL may itself provide all or some of thefunctionality of the system.

Moreover, one or more networks may be implemented as any combination ofnetworks. A network may be a WAN, such as the Internet; a LAN; aPersonal Area Network (“PAN”), or a combination of WANs, LANs, and PANs.Moreover, a network may involve the use of one or more wired protocols,such as SOAP; wireless protocols, such as 802.11a/b/g/n, Bluetooth, orWiMAX; transport protocols, such as TCP or UDP; an Internet layerprotocol, such as IP; application-level protocols, such as HTTP, acombination of any of the aforementioned protocols, or any other type ofnetwork protocol now known or later developed.

Interfaces between the systems and the logic and modules within systemsmay be implemented in numerous ways. For example, interfaces betweensystems may be Web Services, Simple Object Access Protocol, orEnterprise Service Bus interfaces. Other examples of interfaces includemessage passing, such as publish/subscribe messaging, shared memory, andremote procedure calls.

Although aspects of the invention herein have been described withreference to particular embodiments, it is to be understood that theseembodiments are merely illustrative of the principles and applicationsof the present invention. It is therefore to be understood that numerousmodifications may be made to the illustrative embodiments and that otherarrangements may be devised without departing from the spirit and scopeof the invention as defined by the appended claims. Furthermore, whilecertain operations and functions are shown in a specific order, they maybe performed in a different order unless it is expressly statedotherwise.

1. (canceled)
 2. A computer-implemented system for determining productattributes for a configurable product, the computer-implemented systemcomprising: a non-transitory, computer-readable medium storingcomputer-executable instructions; and one or more processors incommunication with the non-transitory, computer-readable medium that,when the computer-executable instructions are executed, the one or moreprocessors are configured to: receive customer attribute values relatingto customer demographic information; identify a product configurationrule based on a selected configurable product, wherein: the productconfiguration rule is associated with a plurality of versions of theproduct configuration rule; and at least one version of the productconfiguration rule evaluates differently depending on at least onecustomer attribute; select a version of the product configuration rulefrom the plurality of versions of the product configuration rule usingat least one of the plurality of customer attribute values, wherein theselection of the version of the product configuration rule is performedprior to evaluation of the selected version of the product configurationrule; and evaluate the selected version of the product configurationrule to provide a configuration of the selected configurable product. 3.The system of claim 2, wherein the product configuration rule isassociated with a class of product configuration rules, the class ofproduct configuration rules determining when the selected version of theproduct configuration rule is evaluated.
 4. The system of claim 3,wherein the class of product configuration rules associated with theselected version of the product configuration rule indicates that theselected version of the product configuration rule is to be evaluatedafter receiving the customer attribute values.
 5. The system of claim 3,wherein the class of product configuration rules associated with theselected version of the product configuration rule indicates that theselected version of the product configuration rule is to be transmittedfor evaluation.
 6. The system of claim 2, wherein the productconfiguration rule is assigned a product configuration rule type, theassigned product configuration rule type being selected from a groupcomprising a non-conditional product configuration rule type, a customerconditional product configuration rule type, a product conditionalproduct configuration rule type, and a product conditional aggregationproduct configuration rule type.
 7. The system of claim 6, wherein thenon-conditional product configuration rule type identifies that theproduct configuration rule includes an action statement not dependentupon a conditional statement.
 8. The system of claim 6, wherein theproduct conditional product configuration rule type identifies that theproduct configuration rule includes an action statement dependent upon aconditional statement, wherein the conditional statement includes atleast one product attribute value.
 9. The system of claim 2, wherein theproduct configuration rule is associated with a binary decision diagramstructure, and each version of the plurality of versions of the productconfiguration rule is associated with a corresponding version of thebinary decision diagram structure.
 10. The system of claim 9, whereineach version of the binary decision diagram structure varies dependingon the associated version of the product configuration rule.
 11. Thesystem of claim 2, wherein the one or more processors are furtherconfigured to evaluate a binary decision diagram structure associatedwith the selected version of the product configuration rule, wherein theevaluation of the binary decision diagram structure identifies one ormore selectable product attribute values for the selected configurableproduct.
 12. A computer-implemented method for determining productattributes for a configurable product, the computer-implemented methodcomprising: receiving, with one or more processors, customer attributevalues relating to customer demographic information; identifying aproduct configuration rule in a non-transitory, computer-readable mediumin communication with the one or more processors based on a selectedconfigurable product, wherein: the product configuration rule isassociated with a plurality of versions of the product configurationrule; and each version of the product configuration rule evaluatesdifferently depending on at least one customer attribute; selecting,with the one or more processors, a version of the product configurationrule from the plurality of versions of the product configuration ruleusing at least one of the plurality of customer attribute values,wherein the selection of the version of the product configuration ruleis performed prior to evaluation of the selected version of the productconfiguration rule; and evaluating the selected version of the productconfiguration rule to provide a configuration of the selectedconfigurable product.
 13. The method of claim 12, wherein the productconfiguration rule is associated with a class of product configurationrules, the class of product configuration rules determining when theselected version of the product configuration rule is evaluated.
 14. Themethod of claim 13, wherein the class of product configuration rulesassociated with the selected version of the product configuration ruleindicates that the selected version of the product configuration rule isto be evaluated after receiving the customer attribute values.
 15. Themethod of claim 13, wherein the class of product configuration rulesassociated with the selected version of the product configuration ruleindicates that the selected version of the product configuration rule isto be transmitted for evaluation.
 16. The method of claim 12, whereinthe product configuration rule is assigned a product configuration ruletype, the assigned product configuration rule type being selected from agroup comprising a non-conditional product configuration rule type, acustomer conditional product configuration rule type, a productconditional product configuration rule type, and a product conditionalaggregation product configuration rule type.
 17. The method of claim 16,wherein the non-conditional product configuration rule type identifiesthat the product configuration rule includes an action statement notdependent upon a conditional statement.
 18. The method of claim 16,wherein the product conditional product configuration rule typeidentifies that the product configuration rule includes an actionstatement dependent upon a conditional statement, wherein theconditional statement includes at least one product attribute value. 19.The method of claim 12, wherein the product configuration rule isassociated with a binary decision diagram structure, and each version ofthe plurality of versions of the product configuration rule isassociated with a corresponding version of the binary decision diagramstructure.
 20. The method of claim 19, wherein each version of thebinary decision diagram structure varies depending on the associatedversion of the product configuration rule.
 21. The method of claim 12,wherein the method further includes: evaluating, with the one or moreprocessors, a binary decision diagram structure associated with theselected version of the product configuration rule, wherein theevaluation of the binary decision diagram structure identifies one ormore selectable product attribute values for the selected configurableproduct.